Celem ninjszego raportu była odpowiedź na pytanie co jest główną przyczna spadku długości śledzi oceanicznych. W tym celu przeprowadzono szereg operacji i analiz na zbiorze danych zebrancyh z ostatnich 60 lat. Pierwszym krokiem było wypełnienie brakujacych wartości. Natępnie dokonano analiz dostępnych atrybutów wraz z wykresami przebiegów czasowych oraz histogramów. Natępnie obliczono korelacje pomiędzy atrybutami. Najwyższe wartości bezwzględne otrzymano między atrybutami dotyczącymi planktonu. Następnie stworzono regresor liniowy wraz z oceną ważności atrybutów. Na podstawie wszystkich kroków stwierdzono, że długość śledzia jest zależna od zagęszczenia planktonu w wodzie. Dla małej wartości zagęszczenia, śledzie osiągają mniejsze długości. Sam planton jest wrażliwy na zmianę poziomu zasolenia oraz temperatury przy powierzchni morza. Wartości dla których zagęszczenie jest wysokie to 35,5 Knudsen ppt oraz 13,5-13,75 stopni Celsjusza.
#Generacja raportu
library(knitr)
#Operacje na danych
library(dplyr)
library(tidyr)
library(reshape2)
#Wartości brakujące
library(mice)
#Wykresy
library(ggplot2)
library(hexbin)
library(plotly)
library(tidyr)
#Regresja
library(caret)
## Warning: package 'caret' was built under R version 3.3.2
Dane zostały wczytane z pliku csv znajdującego się lokalnie na dysku do typu data frame. Przy wczytaniu ustawiono typ dla wszystkich kolumn na numeric poza kolumnami X oraz xmonth - dla nich ustawiono typ integer. Dokonano również zmiany znaków symbolizujących brakujące dane w zestawie - ? na symbol NA w celu ułatwienia późniejszych operacji podczas analizy wartości brakujących. Ostatecznie dokonano konwersji na typ df_tbl pakietu dplyr.
Dane zostały pobrane ze strony: (http://www.cs.put.poznan.pl/dbrzezinski/teaching/zed/sledzie.csv)
mydata = read.csv("sledzie.csv", colClasses = c("integer","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","integer","numeric"),na.strings = c("NA","?"))
df <- data.frame(mydata)
my_df <- tbl_df(df)
Dane na, których oparto analizy dotyczą połowu śledzi oceanicznych wyławianych w Europie na przestrzeni 60 lat. Dane zostały zebrane podczas połowów komercyjnych. Do badań brano losowo od 50 do 100 sztuk trzyletnich śledzi. Dane zawierają niecałe 53 tysiące wpisów dotyczących śledzie. onieżej zebrano podstawowe statystyki dla zbioru.
| X | length | cfin1 | cfin2 | chel1 | chel2 | lcop1 | lcop2 | fbar | recr | cumf | totaln | sst | sal | xmonth | nao | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Min. : 0 | Min. :19.0 | Min. : 0.0000 | Min. : 0.0000 | Min. : 0.000 | Min. : 5.238 | Min. : 0.3074 | Min. : 7.849 | Min. :0.0680 | Min. : 140515 | Min. :0.06833 | Min. : 144137 | Min. :12.77 | Min. :35.40 | Min. : 1.000 | Min. :-4.89000 | |
| 1st Qu.:13145 | 1st Qu.:24.0 | 1st Qu.: 0.0000 | 1st Qu.: 0.2778 | 1st Qu.: 2.469 | 1st Qu.:13.427 | 1st Qu.: 2.5479 | 1st Qu.:17.808 | 1st Qu.:0.2270 | 1st Qu.: 360061 | 1st Qu.:0.14809 | 1st Qu.: 306068 | 1st Qu.:13.60 | 1st Qu.:35.51 | 1st Qu.: 5.000 | 1st Qu.:-1.89000 | |
| Median :26291 | Median :25.5 | Median : 0.1111 | Median : 0.7012 | Median : 5.750 | Median :21.673 | Median : 7.0000 | Median :24.859 | Median :0.3320 | Median : 421391 | Median :0.23191 | Median : 539558 | Median :13.86 | Median :35.51 | Median : 8.000 | Median : 0.20000 | |
| Mean :26291 | Mean :25.3 | Mean : 0.4458 | Mean : 2.0248 | Mean :10.006 | Mean :21.221 | Mean : 12.8108 | Mean :28.419 | Mean :0.3304 | Mean : 520367 | Mean :0.22981 | Mean : 514973 | Mean :13.87 | Mean :35.51 | Mean : 7.258 | Mean :-0.09236 | |
| 3rd Qu.:39436 | 3rd Qu.:26.5 | 3rd Qu.: 0.3333 | 3rd Qu.: 1.7936 | 3rd Qu.:11.500 | 3rd Qu.:27.193 | 3rd Qu.: 21.2315 | 3rd Qu.:37.232 | 3rd Qu.:0.4560 | 3rd Qu.: 724151 | 3rd Qu.:0.29803 | 3rd Qu.: 730351 | 3rd Qu.:14.16 | 3rd Qu.:35.52 | 3rd Qu.: 9.000 | 3rd Qu.: 1.63000 | |
| Max. :52581 | Max. :32.5 | Max. :37.6667 | Max. :19.3958 | Max. :75.000 | Max. :57.706 | Max. :115.5833 | Max. :68.736 | Max. :0.8490 | Max. :1565890 | Max. :0.39801 | Max. :1015595 | Max. :14.73 | Max. :35.61 | Max. :12.000 | Max. : 5.08000 | |
| NA | NA | NA’s :1581 | NA’s :1536 | NA’s :1555 | NA’s :1556 | NA’s :1653 | NA’s :1591 | NA | NA | NA | NA | NA’s :1584 | NA | NA | NA |
| X | length | cfin1 | cfin2 | chel1 | chel2 | lcop1 | lcop2 | fbar | recr | cumf | totaln | sst | sal | xmonth | nao |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 23.0 | 0.02778 | 0.27785 | 2.46875 | NA | 2.54787 | 26.35881 | 0.356 | 482831 | 0.3059879 | 267380.8 | 14.30693 | 35.51234 | 7 | 2.8 |
| 1 | 22.5 | 0.02778 | 0.27785 | 2.46875 | 21.43548 | 2.54787 | 26.35881 | 0.356 | 482831 | 0.3059879 | 267380.8 | 14.30693 | 35.51234 | 7 | 2.8 |
| 2 | 25.0 | 0.02778 | 0.27785 | 2.46875 | 21.43548 | 2.54787 | 26.35881 | 0.356 | 482831 | 0.3059879 | 267380.8 | 14.30693 | 35.51234 | 7 | 2.8 |
| 3 | 25.5 | 0.02778 | 0.27785 | 2.46875 | 21.43548 | 2.54787 | 26.35881 | 0.356 | 482831 | 0.3059879 | 267380.8 | 14.30693 | 35.51234 | 7 | 2.8 |
| 4 | 24.0 | 0.02778 | 0.27785 | 2.46875 | 21.43548 | 2.54787 | 26.35881 | 0.356 | 482831 | 0.3059879 | 267380.8 | 14.30693 | 35.51234 | 7 | 2.8 |
| 5 | 22.0 | 0.02778 | 0.27785 | 2.46875 | 21.43548 | 2.54787 | NA | 0.356 | 482831 | 0.3059879 | 267380.8 | 14.30693 | 35.51234 | 7 | 2.8 |
| X | length | cfin1 | cfin2 | chel1 | chel2 | lcop1 | lcop2 | fbar | recr | cumf | totaln | sst | sal | xmonth | nao |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 52582 | 59 | 39 | 48 | 48 | 51 | 48 | 51 | 51 | 52 | 52 | 53 | 51 | 51 | 12 | 45 |
W celu zachowania powtarzalności wyników ustawiono ziarno generatora na:
set.seed(666)
Dodatkowe wszelki kody zmieniające dane początkowe zostały wyświetlone przy odpowiednich krokach raportu.
Z ogólnych statystyk dla danych dotyczących śledzi można odczytać 7 kolumn, które zawierają wartości brakujące. Ten rozdział raportu będzie poświęcony analizie tych wartości na podstawie, której zostanie podjęta decyzja w jaki sposób zostanie rozwiązany problem - zostawić brakujące wartości, usunąć wiersze z brakującymi wartościami lub wypełnić luki w danych.
Pierwszym krokiem jest sprawdzenie jaka jest liczba unikalnych wartości dla poszczególnych atrybutów. W poniższej tabeli możemy zaobserwoać niewielką liczbę wartości różnych wartości dla zmiennych posiadających wartości brakujące. Zestaw danych posiada ponad 52 tysiące wiersze, dlatego zmienność danych jest w tych kolumnach nie wielka.
| cfin1 | cfin2 | chel1 | chel2 | lcop1 | lcop2 | sst |
|---|---|---|---|---|---|---|
| 39 | 48 | 48 | 51 | 48 | 51 | 51 |
Następnie dokonano próby poszukania wzorcóW na podstawie ktorych można, by zdefiniwać zależności między brakami wartości, a atrybutami. Uzyskany jednak poniższy wykres ukazuję dużę liczbę kombinacji brakujących wartości (53). Są to pojedyncze, podWójne i potrójne braki w wierszu.
Wykonano również wykres przedstawiający liczbę brakujących wartości dla każdego atrybutu. Są one jednak bardzo zbliżonę i w tym wypadku nie można wskazać atrybutu wyróżniającego się.
Ostatnim podejściem było obejrzenie danych źródłowych. Kolejne wiersze są zgrupowane do pojedynczego połowu w pojedyncze połowy, w których jedyną różnicą są długości śledzi. Braki te występują bardzo często w środku takich bloków.
Na podstawie analizy trudno uzyskać jednoznaczny wzorzec brakujących wartości. Dane brakująće dotyczą poziomu planktonu oraz temperatury przy powierzchni wody. Nie są to atrybuuty o dużej zmienności. Próba wstawienia średniej, mediany lub innej wartości statystycznej może spowowdować duże zniekształcenie danych. Występowanie blokóW takich samych danych w zestawie jak i nie wielka liczba brakujących danych w stosunku do całości zbioru skłoniła do pobierania najbliższej wartości nie brakującej w kierunku do góry i wstawienie jej w puste miejsce. Dodatkowo w pierwszym wierszu występuje również pusta wartość, dlatego powtórzono operacje wstawiania w kierunku dolnym. Poniżej znajduję się kod wypelniający brakujące wartości.
new_my_df<-my_df %>% fill(cfin1:lcop2,sst,.direction = "up") %>% fill(cfin1:lcop2,sst,.direction = "down")
Przyjęta metoda nie zaburzyła w widoczny sposób podstawowych statystyk widocznych w poniższej tabli w stosunku do tabeli znajdującej się w sekcji 3.1.
| X | length | cfin1 | cfin2 | chel1 | chel2 | lcop1 | lcop2 | fbar | recr | cumf | totaln | sst | sal | xmonth | nao | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Min. : 0 | Min. :19.0 | 0 :14688 | 0.70118: 4503 | 11.5 : 4932 | 5.67765 : 4498 | 23 : 4932 | 9.17171 : 4498 | Min. :0.0680 | Min. : 140515 | Min. :0.06833 | Min. : 144137 | 13.6315997001: 4495 | Min. :35.40 | Min. : 1.000 | Min. :-4.89000 | |
| 1st Qu.:13145 | 1st Qu.:24.0 | 0.02778: 2289 | 0 : 3912 | 2.46875 : 2288 | 21.67333: 3805 | 2.54787 : 2289 | 24.85867: 3806 | 1st Qu.:0.2270 | 1st Qu.: 360061 | 1st Qu.:0.14809 | 1st Qu.: 306068 | 14.0693330238: 3802 | 1st Qu.:35.51 | 1st Qu.: 5.000 | 1st Qu.:-1.89000 | |
| Median :26291 | Median :25.5 | 1.02508: 2123 | 0.296 : 3800 | 12.15192: 2176 | 39.56809: 2162 | 12.49588: 2175 | 41.65566: 2166 | Median :0.3320 | Median : 421391 | Median :0.23191 | Median : 539558 | 14.4415996823: 2167 | Median :35.51 | Median : 8.000 | Median : 0.20000 | |
| Mean :26291 | Mean :25.3 | 1.21333: 2063 | 0.11736: 2159 | 6.42127 : 2123 | 26.81218: 2063 | 10.92857: 2124 | 45.70773: 2063 | Mean :0.3304 | Mean : 520367 | Mean :0.22981 | Mean : 514973 | 13.5598663683: 2068 | Mean :35.51 | Mean : 7.258 | Mean :-0.09236 | |
| 3rd Qu.:39436 | 3rd Qu.:26.5 | 0.33333: 1981 | 4.55825: 2062 | 19.15475: 2063 | 15.03 : 2008 | 21.23147: 2059 | 17.68 : 2011 | 3rd Qu.:0.4560 | 3rd Qu.: 724151 | 3rd Qu.:0.29803 | 3rd Qu.: 730351 | 13.694933032 : 2007 | 3rd Qu.:35.52 | 3rd Qu.: 9.000 | 3rd Qu.: 1.63000 | |
| Max. :52581 | Max. :32.5 | 0.11111: 1958 | 0.85684: 1722 | 9.66667 : 1979 | 9.43208 : 1722 | 27.33333: 1983 | 10.72889: 1722 | Max. :0.8490 | Max. :1565890 | Max. :0.39801 | Max. :1015595 | 13.861999695 : 1721 | Max. :35.61 | Max. :12.000 | Max. : 5.08000 | |
| NA | NA | (Other):27480 | (Other):34424 | (Other) :37021 | (Other) :36324 | (Other) :37020 | (Other) :36316 | NA | NA | NA | NA | (Other) :36322 | NA | NA | NA |
Zestaw danych zawiera 14 atrybutów. Dotyczą one parametrów morza - temperatura, zasolenie, oscylacja, dostępność planktonu, informacje dotyczące połowów oraz najważniejszy atrybut - długość śledzia.
Długość śledzi wyrażona została w centymetrach. Z pierwszego wykresu można odczytać wzrost długości do jednostek czasu ok 17-18 tysięcy, następnie rozpoczyna się spadek tej wartości. Wykres heksalny ukazuje większe skupienie śledzi o długości 26cm i wiecej do jednostki ok 20 tysięcy. Ostatni wykres jest histogramem, który przedstawia rozkład zbliżony do normalnego. Widać na nim przewagę wartości około 25cm.
Atrybut zawiera temperaturę przy powierzchni wody mierzoną w stopniach Celsjusza. Pierwszy wykres przedstawia zmienność temperatury w czasie z podzieleniem na miesiąće w roku. Można tu odczytać wzrost temperatur wraz z czasem, niezależnie od miesiąca. Histogram przedstawia częste wartości w okolicach 13,5-13,75 oraz większą liczbę temperatur wyższych z dostępnego zakresu.
Atrybut ten przestawia poziom zasolenia wody morskiej wyrażony w Knudsen ppt. Przedział wartości jest bardzo wąski - [35,40;35,60]. Wykresy czasowe pokazują raczej stały poziom zasolenia z małymi wyjątakami. Histogram pokazuje ogromną przewagę wartości 35,5 na innymi.
Atrybut dotyczy globalnej cyrkulacji powietrza i wody oceanicznej; ujawnia się poprzez fluktuacje takich parametrów, jak ciśnienie, temperatura, prędkość wiatru, ilość opadów. Wykres czasu przedstawia początkową wartość bliską zeru lub dodatnią w zależności od miesiąca, następnie dochodzi do spadku niezależnie od miesiąca w roku, po czym można zauważyć wzrost do warości bliskich zeru lub dodatnich. Histogram ukazuje duże zróżnicowanie atrybuty niezależnie od wartości.
Atrybut nateżenia połowów przedstawiony jako ułamek pozostawionego narybku. Na wykresie czasu można zobserwować dużą zmienność wartości, które jednak są występują najczęściej poniżej wartości 0,6 co potwiedza histogram.
Z wykresu możemy zauważyć dużą zmienność z tendencją malejącą. Z rozrzutu punktów można wywnioskować różne powodzenie przy połowach - w podobnym czasie połowy były duże jak i małe. Histogram pokazuje dużą czestość wysokich wartości połowów.
Atrybut łącznego rocznego natężnia połowów w regionie przedstawiony jako ułamek pozostawionego narybku. Wykres przebiegu czasowego pokazuje wzrost z 0,1 do ok 0,3 w przeciągu kolejnych lat.
Atrybut rocznego narybka przedstawia liczbę śledzi. Główne skupienie wartości występuje w przedziale 200-900 tysięcy, chociaż zdarzają się wyjątkowe pomiary do wartości nawet 1,6mln.
Poniżej zebrano wykresy przedstawiające dostępność planktonu 3 typów po dwa gatunki każdy. Są to organizmy stanowiące pożywienie śledzi oceanicznych. Wykresy te podzielono na poszczególne miesiące w celu ułatwienia analizy. Stworzono również histogramy w celu sprawdzenia rozłożenia wartości.
Przed wykonaniem wykresów dokonano normalizacjo danych w przedziale [0:1] w celu ujednoliceniu wartości i ułatwieniu porównania danych.
df_norm_plank <- new_my_df %>% select(X,length,xmonth,cfin1:lcop2) %>% transmute(X = X,length = normalit(length),xmonth=xmonth,cfin1 = normalit(cfin1),cfin2 = normalit(cfin2),chel1 = normalit(chel1),chel2 = normalit(chel2),lcop1 = normalit(lcop1),lcop2 = normalit(lcop2))
Atrybut zawiera bardzo dużą liczbę wartości zbliżoną zeru w stosunku do reszty wartości. Powduję to dużą liczbę spadkóW w linii trendu.
Wartości atrybutow są bardzo zróżnicowane. Widać jednak na każdym wykresie miesiecznym jedno miejsce wysokiego wzorstu w okolicy 2/3 czasu. Na histogramie widać 4 wybijające się wartości.
Atrybut charakteryzuje się bardzo dużym rozrzutem wartości. Na histogramie widać jedną dużą częstość dla wartości 0,25 i jedną większą dla 0,8.
Atrybut ten również charakteryzuje się dużym zróżnicowaniem wartości z wyróżnieniem dwóch wartości o dużej częstości.
Tak jak poprzednie atrybuty dotyczące planktonu i ten charakteryzuję się dużym rozrzutem wartośći. Histogram pokazuje rozkład podobny do równomiernego z wyjątkiem dwóch wartości o dużej częstości.
Ten atrybut charakteryzuję się dużym rozrzutem wartośći. Histogram pokazuje rozkład podobny do równomiernego z wyjątkiem dwóch wartości o dużej częstości.
Dokonano obbliczenia korelacji metodą Pearssona. Z przetwarzania wyłączono atrybut X, który jest jedynie zmienną porządkową. Na podstawie tabeli zamieszczonej poniżej można zauważyć:
W ramach analizy danych stworzono regresor w celu stworzenia predykcji rozmiaru śledzia. Regresor został stworzony na podstawie poniższych parametrów:
W wyniku działań na podzbiorze testowym otrzymano poniższą tabelę (wybrany został model o mtry=2):
| mtry | RMSE | Rsquared | RMSESD | RsquaredSD |
|---|---|---|---|---|
| 2 | 1.188576 | 0.4822817 | 0.0065679 | 0.0038027 |
| 7 | 1.189070 | 0.4818645 | 0.0066612 | 0.0039318 |
| 13 | 1.189665 | 0.4813462 | 0.0065985 | 0.0038748 |
Wyniki dla zbioru testowego:
| RMSE | 1.1889971 |
| Rsquared | 0.4840395 |
W zamieszczeonej poniżej tabeli znalazły się wyniki oceny ważności atrybutów. Mają one pomóc w odpowiedzi na pytanie: co jest główną przyczyną zmiany długości śledzi. Z tabeli można wywnioskować, że największy wpływ na to mają planktony (w szczególności lcop1 i lcop2), zasolenie wody i w mniejszym znaczeniu temperatura przy powierzchni wody. Majac tę wiedzę należy sprawdzić w jaki sposób zmieniały się te atrybuty, by stwierdzić jakie zmiany w nich spowodowały spadek długości śledzia. Ciekawym jest wysoka pozycja poziomu zasolenia, która wykazuje bardzo niską zmienność wartości, a jednak na tyle znaczną, by wpłynąć na długość śledzia.
| Atrybut | Overall |
|---|---|
| lcop1 | 100.00000 |
| sal | 65.81950 |
| lcop2 | 52.53003 |
| cfin2 | 43.81250 |
| chel1 | 43.24862 |
| chel2 | 38.79077 |
| sst | 37.06104 |
| cfin1 | 31.48553 |
| totaln | 31.44565 |
| cumf | 29.79773 |
| recr | 24.10870 |
| nao | 11.94498 |
| fbar | 0.00000 |
Wykresy przedstawiają spadek długości śledzia w sytuacji, gdy poziom zasolenia zaczyna zmieniać wartość z 35,5 na wyższą lub niższą. Widać tu wyraźną zależność. Trudno jednak jednoznacznie stwierdzić czy dla śledzia, aż tak ważnym czynnikiem może być tak niewielka różnica zasolenia wody. Wydaje się, że zasolenie wody jest przyczyną zmian wartości innego atrybutu, który może być bardziej wyczulony na taką zmianę.
Na wykresach wyraźnie widać, że w temperaturze powyżej 14 stopni Celsjusza długość śledzia jest mniejsza, niż poniżej tej wartości. Można założyć, że temperatura przy powierzchni morza ma wpływ na to jak rozwija się śledź.
Z wykresóW zamieszczonych poniżej można odczytać, że długość śledzia zmniejsza się wraz ze zmniejszaniem się zagęszczenia planktonu - na wykresie widoczne przez odcień czerni dla punktów. Widać to w szczególnościdla cfin2, chel1 oraz obu lcop. Wynika z nich jasno, że mniejsza ilość pożywienia wpływa na długość śledzia oceanicznego. Warto, jednak sprawdzić, co wpływa na zmniejszone zagęszczenie planktonu, dlatego dwa kolejne podpunkty analizy ważności atrybutów będą poświęcone wyróżnionym wyżej planktonom.
Z wykresów można odczytać, że optymalna wartość dla rozwoju planktonu to około 35,50 jednostki. Dla tego poziomu widać wyższe zagęszczenie niż, gdy zasolenie jest powyżej lub poniźej tej wartości. Widać to od 30 tysięcznej jednostki czasu. Takie skoki zasolenia mogły spowodować stowrzenie niekorzystnego środowiska dla planktonu.
Z tych wykresów można się dowiedzieć, że zagęszczenie planktonu jest wyższe dla temperatury 13,5-13,75. Dla temperatury 13,75 widać o wiele mniejsze zagęszczenie planktonu.
Zbierając wszystkie informacje z każdego etapu można spróbować odpowiedzieć na pytanie - co jest główną przyczyną spadku długości śledzi oceanicznych? Analityk stwierdza, że jest to spadek zagęszczenia planktonu w morzu, co powoduje trudniejszy dostęp śledzia do pożywienia. Na przedstawionych w ostatniej części raportu wykresach widać zależność niskego poziomu planktonu oraz długości śledzi. Jest to przyczna dosyć łatwa do zrozumienia, ponieważ przy braku dostatecznej ilości składników odżywczych organizm ma ograniczone możliwości rozwoju. Na podstawie zebranych danych udało się również znaleźć możliwą przycznę spadku zagęszczenia planktonu. Jest to zmiana poziomu zasolenia oraz temperatury, w której może on się rozwijać. Z danych wynika, że optimum (wartości przy których zagęszczenie było najwyższe) to odpowiednio 35,5 Knudsen ppt oraz 13,5-13,75 stopni Celsjusza. Na koniec warto dodać, że przeprowadzona analiza jest tylko wstępem do dalszych badań, w których będzie można się sprawdzić prawdziwość wniosków zawartych w tym raporcie na drodze eksperymentów na śledziach oraz planktonie.